<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
</head>

<body>

    <script>

        // 原始ajax查询
        // $.ajax({
        //     url: "mock/user.json",
        //     success: function (data) {
        //         console.log("查到用户: ", data)
        //         $.ajax({
        //             url: `mock/user_corse_${data.id}.json`,
        //             success: function (data) {
        //                 console.log("查到课程: ", data)
        //                 $.ajax({
        //                     url: `mock/corse_score_${data.id}.json`,
        //                     success: function (data) {
        //                         console.log("查到课程得分: ", data)
        //                     },
        //                     error: function (error) {
        //                         console.log("出错。。" + error)
        //                     }
        //                 });
        //             },
        //             error: function (error) {
        //                 console.log("出错。。" + error)
        //             }
        //         });
        //     },
        //     error: function (error) {
        //         console.log("出现异常" + error)
        //     }
        // })

        // Promise查询
        // let p = new Promise((resolve, reject) => {
        //     $.ajax({
        //         url: `mock/user1.json`,
        //         success: function (data) {
        //             console.log("【promise】查询用户成功：", data);
        //             resolve(data);

        //         }, error: function (err) {
        //             reject(err);
        //         }
        //     });
        // });

        // p.then((obj) => {
        //     return new Promise((resolve, reject) => {
        //         $.ajax({
        //             url: `mock/user_corse_${obj.id}.json`,
        //             success: function (data) {
        //                 console.log("【promise】查询用户课程成功：", data);
        //                 resolve(data);

        //             }, error: function (err) {
        //                 reject(err);
        //             }
        //         });
        //     })
        // }).then((obj) => {
        //     $.ajax({
        //         url: `mock/corse_score_${obj.id}.json`,
        //         success: function (data) {
        //             console.log("【promise】查到课程得分: ", data)
        //         },
        //         error: function (error) {
        //             console.log("出错。。" + error)
        //         }
        //     });
        // });

        // 优化Promise查询
        function get(url, data) {
            return new Promise((resolve, reject) => {
                $.ajax({
                    url: url,
                    data: data,
                    success: function (data) {
                        resolve(data);
                    },
                    error: function (error) {
                        reject(error);
                    }
                });
            });
        }

        get(`mock/user.json`)
            .then((obj) => {
                console.log("【promise】查询用户成功~~~~~~：", obj)
                return get(`mock/user_corse_${obj.id}.json`);
            })
            .then((obj) => {
                console.log("【promise】查询用户课程成功~~~~~~：", obj)
                return get(`mock/corse_score_${obj.id}.json`);
            })
            .then((obj) => {
                console.log("【promise】查到课程得分~~~~~~: ", obj)
            }).catch(err => console.log("出现异常", err));

    </script>
</body>

</html>